import request from '@/utils/request'

// 查询排课算法配置列表
export function listAlgorithmConfig(query) {
  return request({
    url: '/jwgl/schedule/algorithm/list',
    method: 'get',
    params: query
  })
}

// 查询排课算法配置详细
export function getAlgorithmConfig(configId) {
  return request({
    url: '/jwgl/schedule/algorithm/' + configId,
    method: 'get'
  })
}

// 新增排课算法配置
export function addAlgorithmConfig(data) {
  return request({
    url: '/jwgl/schedule/algorithm',
    method: 'post',
    data: data
  })
}

// 修改排课算法配置
export function updateAlgorithmConfig(data) {
  return request({
    url: '/jwgl/schedule/algorithm',
    method: 'put',
    data: data
  })
}

// 删除排课算法配置
export function delAlgorithmConfig(configId) {
  return request({
    url: '/jwgl/schedule/algorithm/' + configId,
    method: 'delete'
  })
}

// 获取默认配置
export function getDefaultConfig() {
  return request({
    url: '/jwgl/schedule/algorithm/default',
    method: 'get'
  })
}

// 设置默认配置
export function setDefaultConfig(configId, isDefault) {
  return request({
    url: '/jwgl/schedule/algorithm/setDefault/' + configId,
    method: 'post',
    params: { isDefault: isDefault }
  })
}

// 根据算法类型查询配置
export function getConfigsByType(algorithmType) {
  return request({
    url: '/jwgl/schedule/algorithm/type/' + algorithmType,
    method: 'get'
  })
}

// 根据配置名称查询配置
export function getConfigByName(configName) {
  return request({
    url: '/jwgl/schedule/algorithm/name/' + configName,
    method: 'get'
  })
}

// 查询启用的配置
export function getEnabledConfigs() {
  return request({
    url: '/jwgl/schedule/algorithm/enabled',
    method: 'get'
  })
}

// 复制配置
export function copyAlgorithmConfig(configId, newConfigName) {
  return request({
    url: '/jwgl/schedule/algorithm/copy/' + configId,
    method: 'post',
    params: { newConfigName: newConfigName }
  })
}

// 复制配置（兼容性方法）
export function copyConfig(configId, newConfigName) {
  return copyAlgorithmConfig(configId, newConfigName)
}

// 验证配置参数
export function validateConfig(config) {
  return request({
    url: '/jwgl/schedule/algorithm/validate',
    method: 'post',
    data: config
  })
}

// 获取推荐配置
export function getRecommendedConfig(params) {
  return request({
    url: '/jwgl/schedule/algorithm/recommend',
    method: 'get',
    params: params
  })
}

// 获取算法类型列表
export function getAlgorithmTypes() {
  return request({
    url: '/jwgl/schedule/algorithm/types',
    method: 'get'
  })
}

// 测试配置性能
export function testConfig(configId, testParams) {
  return request({
    url: '/jwgl/schedule/algorithm/test/' + configId,
    method: 'post',
    data: testParams
  })
}

// 重置配置为默认值
export function resetConfig(configId) {
  return request({
    url: '/jwgl/schedule/algorithm/reset/' + configId,
    method: 'post'
  })
}

// 导出排课算法配置
export function exportAlgorithmConfig(query) {
  return request({
    url: '/jwgl/schedule/algorithm/export',
    method: 'post',
    data: query
  })
}